# PCB & Context Switching



# Process Management

CPU๊ฐ€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์ผ ๋•Œ, CPU ์Šค์ผ€์ค„๋ง์„ ํ†ตํ•ด ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋งํ•จ

์ด๋•Œ, CPU๋Š” ๊ฐ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋ˆ„๊ตฐ์ง€ ์•Œ์•„์•ผ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•จ

ํ”„๋กœ์„ธ์Šค๋“ค์˜ ํŠน์ง•์„ ๊ฐ–๊ณ ์žˆ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ Process Metadata

  • # Process Metadata

    • Process ID
    • Process State
    • Process Priority
    • CPU Registers
    • Owner
    • CPU Usage
    • Memeory Usage

์ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด PCB(Process Control Block)์ด๋ผ๋Š” ๊ณณ์— ์ €์žฅ๋จ


# PCB(Process Control Block)

ํ”„๋กœ์„ธ์Šค ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋“ค์„ ์ €์žฅํ•ด ๋†“๋Š” ๊ณณ, ํ•œ PCB ์•ˆ์—๋Š” ํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊น€

# ๋‹ค์‹œ ์ •๋ฆฌํ•ด๋ณด๋ฉด?

ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ โ†’ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ โ†’ ํ”„๋กœ์„ธ์Šค ์ฃผ์†Œ ๊ณต๊ฐ„์— (์ฝ”๋“œ, ๋ฐ์ดํ„ฐ, ์Šคํƒ) ์ƒ์„ฑ 
โ†’ ์ด ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋“ค์ด PCB์— ์ €์žฅ

# PCB๊ฐ€ ์™œ ํ•„์š”ํ•œ๊ฐ€์š”?

CPU์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ๊ต์ฒด์ž‘์—…์ด ์ด๋ฃจ์–ด์ง„๋‹ค. (interrupt๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ํ• ๋‹น๋ฐ›์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ waiting ์ƒํƒœ๊ฐ€ ๋˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ running์œผ๋กœ ๋ฐ”๊ฟ” ์˜ฌ๋ฆด ๋•Œ)

์ด๋•Œ, ์•ž์œผ๋กœ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•  ๋Œ€๊ธฐ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์— ๊ด€ํ•œ ์ €์žฅ ๊ฐ’์„ PCB์— ์ €์žฅํ•ด๋‘๋Š” ๊ฒƒ์ด๋‹ค.


# PCB๋Š” ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌ๋˜๋‚˜์š”?

Linked List ๋ฐฉ์‹์œผ๋กœ ๊ด€๋ฆฌ๋œ๋‹ค.

PCB List Head์— PCB๋“ค์ด ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ๋ถ™๊ฒŒ ๋œ๋‹ค. ์ฃผ์†Œ๊ฐ’์œผ๋กœ ์—ฐ๊ฒฐ์ด ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š” ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฝ์ž… ์‚ญ์ œ๊ฐ€ ์šฉ์ดํ•˜๋‹ค.

์ฆ‰, ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ํ•ด๋‹น PCB๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ํ”„๋กœ์„ธ์Šค ์™„๋ฃŒ์‹œ ์ œ๊ฑฐ๋œ๋‹ค.



์ด๋ ‡๊ฒŒ ์ˆ˜ํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ, CPU์˜ ๋ ˆ์ง€์Šคํ„ฐ ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ Context Switching์ด๋ผ๊ณ  ํ•œ๋‹ค.

# Context Switching

CPU๊ฐ€ ์ด์ „์˜ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๋ฅผ PCB์— ๋ณด๊ด€ํ•˜๊ณ , ๋˜ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด๋ฅผ PCB์— ์ฝ์–ด ๋ ˆ์ง€์Šคํ„ฐ์— ์ ์žฌํ•˜๋Š” ๊ณผ์ •

๋ณดํ†ต ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜, ์‹คํ–‰ ์ค‘์ธ CPU ์‚ฌ์šฉ ํ—ˆ๊ฐ€์‹œ๊ฐ„์„ ๋ชจ๋‘ ์†Œ๋ชจํ•˜๊ฑฐ๋‚˜, ์ž…์ถœ๋ ฅ์„ ์œ„ํ•ด ๋Œ€๊ธฐํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— Context Switching์ด ๋ฐœ์ƒํ•œ๋‹ค.

์ฆ‰, ํ”„๋กœ์„ธ์Šค๊ฐ€ Ready โ†’ Running, Running โ†’ Ready, Running โ†’ Waiting์ฒ˜๋Ÿผ ์ƒํƒœ ๋ณ€๊ฒฝ ์‹œ ๋ฐœ์ƒ!


# Context Switching์˜ OverHead๋ž€?

overhead๋Š” ๊ณผ๋ถ€ํ•˜๋ผ๋Š” ๋œป์œผ๋กœ ๋ณดํ†ต ์•ˆ์ข‹์€ ๋ง๋กœ ๋งŽ์ด ์“ฐ์ธ๋‹ค.

ํ•˜์ง€๋งŒ ํ”„๋กœ์„ธ์Šค ์ž‘์—… ์ค‘์—๋Š” OverHead๋ฅผ ๊ฐ์ˆ˜ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์žˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•˜๋‹ค๊ฐ€ ์ž…์ถœ๋ ฅ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ „ํ™˜์‹œํ‚ด
์ด๋•Œ, CPU๋ฅผ ๊ทธ๋ƒฅ ๋†€๊ฒŒ ๋†”๋‘๋Š” ๊ฒƒ๋ณด๋‹ค ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰์‹œํ‚ค๋Š” ๊ฒƒ์ด ํšจ์œจ์ 

์ฆ‰, CPU์— ๊ณ„์† ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰์‹œํ‚ค๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ณ  Context Switching ํ•˜๋Š” ๊ฒƒ

CPU๊ฐ€ ๋†€์ง€ ์•Š๋„๋ก ๋งŒ๋“ค๊ณ , ์‚ฌ์šฉ์ž์—๊ฒŒ ๋น ๋ฅด๊ฒŒ ์ผ์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ณตํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค.

์ตœ์ข… ์ˆ˜์ • : 12/17/2022, 7:23:59 AM